﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using System.Runtime.Serialization;


namespace Sistema.Dominio
{
    [DataContract]
    public class UsuarioInfo:PessoaVO
    {
        private DateTime _dataCadastro;
        private String _usuarioCadastro;
        private LoginVO _login;

        public UsuarioInfo()
            :base(typeof(UsuarioInfo))
        {
            this.DadosPessoais = new DadosPessoaFisicaVO();
            this.TipoPessoa = enumTipoPessoa.PessoaFisica;
            this._dataCadastro = DateTime.Now;
            this._usuarioCadastro = String.Empty;
            this._login = new LoginVO();
        }

        [DataMember]
        public LoginVO Login
        {
            get { return _login; }
            set { _login = value; }
        }
        [DataMember]
        public DateTime DataCadastro
        {
            get { return _dataCadastro; }
            set { _dataCadastro = value; }
        }
        [DataMember]
        public String UsuarioCadastro
        {
            get { return _usuarioCadastro; }
            set { _usuarioCadastro = value; }
        }

        #region Equal Implementation
 
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }
        public bool Equals(UsuarioInfo obj)
        {
            if (this.DataCadastro != obj.DataCadastro)
            {
                return false;
            }
            if(this.UsuarioCadastro != obj.UsuarioCadastro)
            {
                return false;
            }
            if (!this.Login.Equals(obj))
            {
                return false;
            }
            if (!base.Equals(obj))
            {
                return false;
            }
            return true;
        }

        #endregion

        #region GetHashCode Implementation

        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
        #endregion
    }
}
